package chapter1.fileInput.task;

import java.io.*;

/*
3：实现文件加密解密：加密规则是读出每一个字节，取反(~)后，写入
新文件，然后删除原文件，把新文件改成原文件同名的文件，
解密规则类似。输入一个文件名，实现加密和解密功能
 */
public class Task4 {
    public static void main(String[] args) throws Exception {
        File f = new File("F:\\123\\1.txt");
        InputStream fR = new FileInputStream(f);
        byte[] b = new byte[fR.available()];
        int length = fR.read(b);
        String s1 = new String(b, 0, length);
        System.out.println(s1);
        fR.close();
        f.delete();


        for (int i = 0; i < b.length; i++) {
            b[i] = (byte) ~b[i];  //加密
        }
        File f1 = new File("F:\\123\\2.txt");
        FileOutputStream fO = new FileOutputStream(f1);
        fO.write(b);
        fO.close();
        f1.renameTo(new File("F:\\123\\1.txt"));

        InputStream fR1 = new FileInputStream(new File("F:\\123\\1.txt"));//f1改了名，抽象路径发生改变，要重新指向
        byte[] b1 = new byte[fR1.available()];
        fR1.read(b1);
        fR1.close();
        String s2 = new String(b1, 0, b1.length);
        System.out.println(s2);

        for (int i = 0; i < b1.length; i++) {
            b1[i] = (byte) ~b1[i];  //解密
        }
        String s3 = new String(b1, 0, b1.length);
        System.out.println(s3);


    }
}
